package algorithm.middle;

import java.util.Arrays;
import java.util.Comparator;
import java.util.stream.Stream;

/**
 * 如果字符串中不含有任何 'aaa'，'bbb' 或 'ccc' 这样的字符串作为子串，那么该字符串就是一个「快乐字符串」。
 * <p>
 * 给你三个整数 a，b ，c，请你返回 任意一个 满足下列全部条件的字符串 s：
 * <p>
 * s 是一个尽可能长的快乐字符串。
 * s 中 最多 有a 个字母 'a'、b 个字母 'b'、c 个字母 'c' 。
 * s 中只含有 'a'、'b' 、'c' 三种字母。
 * 如果不存在这样的字符串 s ，请返回一个空字符串 ""。
 */
public class LongestDiverseString1405 {
    public static String longestDiverseString(int a, int b, int c) {
        int[][] arr = new int[][]{{a,'a'},{b,'b'},{c,'c'}};
        Arrays.sort(arr, (o1, o2) -> o2[0] - o1[0] );
        StringBuilder str = new StringBuilder();
        while (true) {
            if (arr[0][0] == 0) break;
            int len = str.length();
            if (len>1){
                if (str.charAt(len-1)==arr[0][1] && str.charAt(len-2)==arr[0][1]){
                    if (arr[1][0]>0){
                        char i = (char) arr[1][1];
                        arr[1][0]--;
                        str.append(i);
                    }else {
                        break;
                    }
                }else {
                    char i = (char) arr[0][1];
                    arr[0][0]--;
                    str.append(i);
                }
            }else {
                char i = (char) arr[0][1];
                arr[0][0]--;
                str.append(i);
            }
            Arrays.sort(arr, (o1, o2) -> o2[0] - o1[0] );
        }
        return str.toString();
    }

    public static void main(String[] args) {
        System.out.println(longestDiverseString(0,0,0));
    }
}
